/**
 * 台账Utils
 *
 * **********************************************
 * **   页面中需要给出 $addTb 这个全局变量     **
 * **   如： var $addTb = $("#tableId")        **
 * **********************************************
 *
 */

function TzUtils(){}
TzUtils.otherThing = undefined;//其他扩展

/** 修改样例表格的样式 */
TzUtils.format_modelTbStyle = function(tableId){
    $("tr:lt(2)").css({"background":"#fff","height":"30px","color":"orange"});
    $("#modelTb").add($("#"+tableId)).datagrid("resize");
}

/** 操作列按钮控制  */
TzUtils.formatZcBtn = function(index){
    var tj = '<span class="btnTj spanBtn">添加</span>';
    var sc = '<span class="btnSc spanBtn">删除</span>';
    var total = $addTb.datagrid("getRows").length;
    if(total == 1){
        return tj
    }else if(index+1 == total){
        return tj + "&nbsp;&nbsp" + sc;
    }else{
        return sc;
    }
}

/** 弹出导入Excel的弹窗 */
TzUtils.openImpotView = function(openUrl){
    parent.layer.open({
        type: 2,
        area: ["350px", "160px"],
        content: openUrl,
        scrollbar: false,
        resize: false,
        title:'导入',
        end: function(){
            var excelData = StoreCache.removeCache("excelData");
            if(!$.isEmptyObject(excelData)){
//                            $addTb.datagrid("endEdit",$addTb.data("editRowNum"));
//                            var rows = $addTb.datagrid("getRows");
//                            $addTb.datagrid("loadData",rows.concat(excelData));
                $addTb.datagrid("loadData",excelData);//清除原数据
                $addTb.data("editRowNum",'-1'); //清空选中记录
            }
        }
    });
}

/** 添加一个空行，并进入编辑状态 */
TzUtils.addRow = function(newRowData) {
    //1.最后一行数据是否存在错误
    var lastRowIndex = $addTb.datagrid("getRows").length-1;
    if(lastRowIndex>=0){
        $addTb.data("editRowNum",lastRowIndex).datagrid('selectRow', lastRowIndex).datagrid('beginEdit', lastRowIndex);
        if(typeof TzUtils.otherThing == 'function'){
            TzUtils.otherThing();
        }
        if(!$(".easyuiEditText").QuickValidate(TzUtils.validateConfig())) return;

        $addTb.datagrid('endEdit', lastRowIndex);
    }
    //2.添加新行，并开启编辑
    if($.isEmptyObject(newRowData)) newRowData = {};
    $addTb.datagrid("appendRow",newRowData);
    var rows = $addTb.datagrid("getRows");
    $addTb.datagrid("loadData",rows);//重新载入刷新操作按钮

    $addTb.data("editRowNum",rows = rows.length-1).datagrid('selectRow', rows).datagrid('beginEdit', rows);
}

/** 删除一行 */
TzUtils.deleteRow = function(){
    $.QuickAlert.alertConfirm({
        content : "确认删除该行？",
        callback : function() {
            var data = $addTb.datagrid("getSelected");
            var deleteRowNumber = $addTb.datagrid('getRowIndex',data);
            $addTb.datagrid('deleteRow',deleteRowNumber).datagrid("loadData",$addTb.datagrid("getRows"));
        }
    })
}

/** 提交保存数据 */
TzUtils.save = function(saveUrl,otherParams) {
    if(TzUtils.saveValidate()){
        var rows = $addTb.datagrid("getRows");
        var params = $.extend({},{type:"add", rows: JSON.stringify(rows)},otherParams);
        $.QuickRemote.AjaxJson(saveUrl, function(result){
            if(result.state){
                $.QuickAlert.alertNormal(result.info, {callback: function(){
                    $("#btnFh").trigger("click");
                }});
            }else{
                $.QuickAlert.alertFail({content: result.info});
            }
        }, params);
    }
}

/** 保存验证  */
TzUtils.saveValidate = function() {
    var data = $addTb.datagrid("getRows");
    if(data.length==0) {
        $.QuickAlert.alertFail({content: "请至少添加一条数据!"});
        return false;
    }
    var validate = true;
    $addTb.datagrid('endEdit', $addTb.data("editRowNum")); //保存正在编辑的行的数据
    $.each(data, function(editRowNumber){
        $addTb.data("editRowNum",editRowNumber).datagrid('selectRow', editRowNumber).datagrid('beginEdit', editRowNumber);
        if(typeof TzUtils.otherThing == 'function'){
            TzUtils.otherThing();
        }
        var flag = $(".easyuiEditText").QuickValidate(TzUtils.validateConfig());
        if(!flag) {
            validate = false;
            return false;
        }else{
            $addTb.datagrid('endEdit', editRowNumber);
        }
    })
    return validate;


    //模拟线程，加快验证 ----未能实现
    /*var size = 20;
     var threads = Math.ceil(data.length/size); //向上取整
     var threadPool = [];
     var delNum;
     var aa = function(){
     for(var i= 0;i<threads;i++){
     var errRowIndex;
     Concurrent.Thread.create(function (i,size,delNum) {
     for(var j=i*size;j<(i+1)*size;j++){
     if(j+1 == (i+1)*size){
     threads--;
     }
     $addTb.datagrid('selectRow', j).datagrid('beginEdit', j);
     if(!$(".easyuiEditText").QuickValidate()) {
     delNum = j;
     return j;
     break;
     }else{
     $addTb.datagrid('endEdit', j);
     }
     }
     }, i,size,delNum);
     }

     }();*/
//            var validateing = true;
//            var errNum;
//            Concurrent.Thread.create(function (validateing,data,errNum){
//                $.each(data, function(editRowNumber){
//                    $addTb.data("editRowNum",editRowNumber).datagrid('selectRow', editRowNumber).datagrid('beginEdit', editRowNumber);
//                    if(!$(".easyuiEditText").QuickValidate()) {
//                        errNum = editRowNumber;
//                        return false;
//                    }else{
//                        $addTb.datagrid('endEdit', editRowNumber);
//                    }
//                })
//            },validateing,data,errNum)
//            var i=0;
//            while(validateing){
//                sleep(1000);
//                console.log(i++)
//            }
//            alert(errNum)
}


/** 框架校验参数 */
TzUtils.validateConfig = function(){
    return validateConfig = {
        /*验证错误默认提示方法*/
        tipsFunc: function(validateFailMsg){
            var $this = $(this);
            if(validateConfig.firstErr){
                $.QuickAlert.alertFail({
                    content: validateFailMsg
                    ,callback: function(){
                        $this.focus();
                    }
                });
                validateConfig.firstErr = false;
            }
            var oldBorder = $this.attr("oldBorder") || $this.css("border");
            $this.attr("oldBorder",oldBorder).css("border","1px solid red");
            $this.click(function(){
                $(this).css("border",$(this).attr("oldBorder"));
            })
        },
        /*是否全部校验*/
        validateAll: true,
        firstErr: true
    }
}

